package com.spsa.negocio.gestores;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import com.spsa.excepciones.ActualizarDatosException;
import com.spsa.excepciones.EliminarDatosException;
import com.spsa.excepciones.GuardarDatosException;
import com.spsa.excepciones.RecuperarDatosException;
import com.spsa.excepciones.ServicioException;
import com.spsa.negocio.utilidades.SingletonDatos;
import com.spsa.persistencia.dao.DestinatarioDao;
import com.spsa.persistencia.entidades.Destinatario;

@Stateless
public class GestorDestinatario {
	
	@EJB
	private DestinatarioDao destinatarioDao;
	@EJB
	private SingletonDatos singletonDatos;
	
	public void registrar(Destinatario destinatario) throws ServicioException{
		try {
			destinatarioDao.guardar(destinatario);
			singletonDatos.cargarDatosDestinatarios();
		}
		catch(GuardarDatosException e) {
			throw new ServicioException(e.getMessage());
		}
	}
	
	public void actualizar(Destinatario destinatario) throws ServicioException{
		try {
			if(!destinatarioDao.existe(destinatario.getId()))
				throw new ServicioException("El destiantario que desea actualizar no esta registrado en la BD");
			
			destinatarioDao.actualizar(destinatario);
			singletonDatos.cargarDatosDestinatarios();
		}
		catch(ActualizarDatosException e) {
			throw new ServicioException("Error al actualizar los datos del destinatario");
		}
		catch(RecuperarDatosException e) {
			throw new ServicioException("No se pudo conectar a la BD");
		}
	}

	public void eliminar(Destinatario destinatario) throws ServicioException {
		try {
			destinatarioDao.eliminar(destinatario);
			singletonDatos.cargarDatosDestinatarios();
		}
		catch(EliminarDatosException e) {
			throw new ServicioException("No se pudo eliminar el usuario");
		}
	}
}
